<?php
/**
 * Helper para formataçoes
 *
 * @author Aquiles B da Silva
 */
class Parceria_View_Helper_Mask extends Zend_View_Helper_Abstract {

    protected static $_prefixes = array('', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y');

    public function mask() {
        return $this;
    }

    public function formataCNPJ($string) {
        $vRetorno = "";

        $tamString = strlen($string);

        if ($tamString == 14) {
            $vRetorno = substr($string, 0, 2) . '.';
            $vRetorno .=substr($string, 2, 3) . '.';
            $vRetorno .=substr($string, 5, 3) . '/';
            $vRetorno .=substr($string, 8, 4) . '-';
            $vRetorno .=substr($string, 12, 2);
        } elseif ($tamString == 11) {
            $vRetorno = substr($string, 0, 3) . '.';
            $vRetorno .=substr($string, 3, 3) . '.';
            $vRetorno .=substr($string, 6, 3) . '-';
            $vRetorno .=substr($string, 9, 2);
        } else {
            $vRetorno = $string;
        }

        return $vRetorno;
    }

    public function formataFone($valor, $separadorFone = '-', $delimitadorDdd = '()') {
        $retorno = NULL;
        $valor = trim($valor);
        if ($valor) {
            if (!preg_match('/^[0-9]+$/', $valor))
                $retorno = $valor;
            else {
                if (strlen($valor) == 8) {
                    $retorno = substr($valor, 0, 4) . $separadorFone . substr($valor, 4, 4);
                } else if (strlen($valor) == 10) {
                    $retorno = $delimitadorDdd[0] . substr($valor, 0, 2) . $delimitadorDdd[1] . ' ' . substr($valor, 2, 4) . $separadorFone . substr($valor, 6, 8);
                }
            }
        }
        return $retorno;
    }

    function formataCEP($string) {
        if (!strpos($string, '-')) {
            return substr($string, 0, 5) . "-" . substr($string, 5, 3);
        } else {
            return $string;
        }
    }

    function formataMoeda($string, $decimal = 2, $separadorDecimal = ',', $separadorMilhar='.', $idioma = 'pt_BR', $moedaFrente = true) {
        if ($string === NULL) {
            return NULL;
        }
        if ($idioma == 'es_CL') {
            $valorChileno = '$ ' . number_format($string, 0, '', '.');
            return $valorChileno;
        } else {
            if ($moedaFrente)
                $valor = 'R$ ';
            else
                $valor = '';

            $valor .= number_format($string, $decimal, $separadorDecimal, $separadorMilhar);
            return $valor;
        }
    }

    public function formataData($data, $formatoSaida = 'dd/MM/YYYY') {
        $tsData = strtotime($data);
        if (!$tsData) {
            return '';
        }
        $zfDate = new Zend_Date($tsData, Zend_Date::TIMESTAMP);
        return $zfDate->toString($formatoSaida);
    }

    public function formataStrTime($time, $formatoSaida = 'dd/MM/YYYY') {
        if (empty($time))
            return NULL;
        $zfDate = new Zend_Date($time, Zend_Date::TIMESTAMP);
        return $zfDate->toString($formatoSaida);
    }

    public function formataHora($data) {
        $tsData = strtotime($data);
        $zfDate = new Zend_Date($tsData, Zend_Date::TIMESTAMP);
        return $zfDate->toString(Zend_Date::HOUR . ':' . Zend_Date::MINUTE . ':' . Zend_Date::SECOND);
    }

    public function formataValor($valor) {
        if (is_numeric($valor))
            return number_format($valor, 2, ',', '.');
        else
            return '';
    }

    public function retornaOperadora($cod) {
        $strReturn = '';
        switch ($cod) {
            case '141': $strReturn = 'MASTERCARD';
                break;
            case '154': $strReturn = 'VISA';
                break;
            case '162': $strReturn = 'PARCERIA';
                break;
        }
        return $strReturn;
    }

    public function maskFileSize($fileSizeInBytes, $precision = 2) {
        $result = $fileSizeInBytes;
        $index = 0;
        while ($result > 1024 && $index < count(self::$_prefixes)) {
            $result = $result / 1024;
            $index++;
        }

        $fileSize = sprintf('%1.' . $precision . 'f %sB', $result, self::$_prefixes[$index]);
        $fileSize = str_replace('.', ',', $fileSize);

        return $fileSize;
    }

}